package com.itheima.factory;


/*
* 生产bean的工厂类对象
* */

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class BeanFactory {
    //读取Properties文件对象
    private static Properties pro = new Properties();
    //创建可以存放Bean对象的容器
    private static Map<String, Object> map = new HashMap<String, Object>();


    //静态代码块
        static {
            //读取配置文件信息
        //创建一个properties集合
        try {
            InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("beans.properties");
            pro.load(is);
            //获取pro集合所有的key
            Enumeration keys = pro.keys();

            //遍历获取每一个key
            while (keys.hasMoreElements()) {
//                迭代把获取的key强制转换为String类型
                String key = (String) keys.nextElement();
                //获取值
                String beanVal = pro.getProperty(key);
                //反射获取object对象
                Object obj = Class.forName(beanVal).newInstance();
                //将key和obj储存到map集合之中
                map.put(key, obj);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

    //根据传入的key返回beanVal
    public static Object getBean(String beanName){
        return map.get(beanName);
    }

}
